package gw.com.android.model;

import org.json.JSONArray;
import org.json.JSONObject;

import gw.com.android.app.GTConfig;
import www.com.library.model.DataItemDetail;
import www.com.library.model.DataItemResult;

/**
 * Created by reeta.zou on 2016/8/3.
 * 项目中tab项相关界面选项的配置处理，包含行情，资讯，消息中心界面
 */
public class ConfigTypesDeal {
    
    /**
     * 行情界面类型菜单选项
     *
     * @return
     */
    public DataItemResult getQuoteTypeListWithoutBtType() {
        JSONArray array = ConfigUtil.instance().mConfigObject.optJSONArray(ConfigType.QUOTE_TYPE_LIST_WITHOUT_BT_TYPE);
        if (null != array && array.length() > 0) {
            return getMenuList(array, ConfigType.QUOTE_TYPE_LIST_WITHOUT_BT_TYPE);
        }

        return new DataItemResult();

    }

    /**
     * 行情界面类型菜单选项
     *
     * @return
     */
    public DataItemResult getQuoteTypeList() {
        JSONArray array = ConfigUtil.instance().mConfigObject.optJSONArray(ConfigType.QUOTE_TYPE_LIST);
        if (null != array && array.length() > 0) {
            return getMenuList(array, ConfigType.QUOTE_TYPE_LIST);
        }

        return new DataItemResult();

    }

    /**
     * 交易界面类型菜单选项
     *
     * @return
     */
    public DataItemResult getTradeTypeList() {
        JSONArray array = ConfigUtil.instance().mConfigObject.optJSONArray(ConfigType.TRADE_TYPE_LIST);
        if (null != array && array.length() > 0) {
            return getMenuList(array, ConfigType.TRADE_TYPE_LIST);
        }

        return new DataItemResult();

    }

    /**
     * 行情界面类型菜单选项,游客专用
     *
     * @return
     */
    public DataItemResult getQuoteTypeListGuest() {
        JSONArray array = ConfigUtil.instance().mConfigObject.optJSONArray(ConfigType.QUOTE_TYPE_LIST_GUEST);
        if (null != array && array.length() > 0) {
            return getMenuList(array, ConfigType.QUOTE_TYPE_LIST_GUEST);
        }

        return new DataItemResult();
    }

    /**
     * 交易界面更多类型菜单选项
     *
     * @return
     */
    public DataItemResult getMoreTypeList() {
        JSONArray array = ConfigUtil.instance().mConfigObject.optJSONArray(ConfigType.TAB_TRADE_TYPE_MORE);
        if (null != array && array.length() > 0) {
            return getMenuList(array, ConfigType.TAB_TRADE_TYPE_MORE);
        }

        return new DataItemResult();

    }

    /**
     * 资讯界面类型菜单选项
     *
     * @return
     */
    public DataItemResult getNewsTypeList() {
        JSONArray array = ConfigUtil.instance().mConfigObject.optJSONArray(ConfigType.NEWS_TYPE_LIST);
        if (null != array && array.length() > 0) {
            return getMenuList(array, ConfigType.NEWS_TYPE_LIST);
        }

        return new DataItemResult();
    }

    /**
     * 根据配置文件条件返回各菜单的一些选项
     *
     * @param array
     * @return
     */
    private DataItemResult getMenuList(JSONArray array, String tag) {
        DataItemResult items = new DataItemResult();
        DataItemDetail mItem = null;
        for (int i = 0; i < array.length(); i++) {
            /**
             * "self_type","fx_type","oil_type","index_type","pm_type","reference_type"
             * "position_type","pending_type","deal_type","profit_type"
             * "instant_news_type","professional_type"
             * "important_type","trading_schedule_type","maintenance_type","preferential_type","deposit_draw_type",
             * "news_bus_type","quote_remind_type","service_prompt_type","onlive_alerts_type"
             */
            JSONObject jsonObject = array.optJSONObject(i);
            String key = jsonObject.optString(ConfigType.CONFIG_TYPE_TITLE_TAG);
            if (!jsonObject.optBoolean(ConfigType.CONFIG_TYPE_HAS_NEED_TAG)) {
                continue;
            }
            mItem = new DataItemDetail();
            mItem.setStringValue(ConfigType.CONFIG_TYPE_KEY_TAG, key);
            if (GTConfig.instance().getLanguage().equals(GTConfig.LANG_ZH_CN)) {
                mItem.setStringValue(ConfigType.CONFIG_TYPE_TITLE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_DES_TAG));
            } else {
                mItem.setStringValue(ConfigType.CONFIG_TYPE_TITLE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_TW_DES_TAG));
            }
            if (jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_TAG).length() > 0) {
                if (GTConfig.instance().getLanguage().equals(GTConfig.LANG_ZH_CN)) {
                    mItem.setStringValue(ConfigType.CONFIG_TYPE_TYPE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_TAG));
                } else {
                    if (jsonObject.optString(ConfigType.CONFIG_TYPE_TW_TYPE_TAG).length() > 0) {
                        mItem.setStringValue(ConfigType.CONFIG_TYPE_TYPE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TW_TYPE_TAG));
                    } else {
                        mItem.setStringValue(ConfigType.CONFIG_TYPE_TYPE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_TAG));
                    }
                }
                mItem.setStringValue(ConfigType.CONFIG_TYPE_VALUE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_VALUE_TAG));
            } else {
                mItem.setStringValue(ConfigType.CONFIG_TYPE_TYPE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_VALUE_TAG));
            }

            items.addItem(mItem);
        }
        return items;
    }

}
